#include <iostream>

bool b = 42; // b为真
int i = b; // i的值为1
i = 3.14; // i的值为3
double pi = i; // pi的值为3.0
unsigned char c = -1; // 假设char占8bit，c的值为255
signed char c2 = 256; // 假设char占8bit，c2的值是未定义的

// 把int转化成无符号数的过程和把int直接赋值给无符号变量一样
// 如果一个算术表达式中既有无符号数又有int值时，那个int值就会转换成无符号数
unsigned u = 10;
int i = -42;
std::cout << i + i << std::endl; // 输出-84
std::cout << u + i << std::endl; // 如果int占32位，输出4294967264,原因是相加前
                                 // 首先把整数-42转换成了无符号数类似于直接给无符号数赋一个负值

// 当从无符号数中减去一个值时，不管这个值是不是无符号数，我们都要确保结果不能是一个负值
unsigned u1 = 42, u2 = 10;
std::cout << u1 - u2 << std::endl; // 正确，输出32
std::cout << u2 - u1 << std::endl; // 正确，不过输出结果是取模后的值

